home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / e / e_modules02.lha / e_modules02 / valid / valid.e < prev    next >
Encoding:
Text File  |  1996-08-07  |  3.7 KB  |  107 lines

  1. OPT OSVERSION=37
  2. OPT PREPROCESS, REG=5
  3.  
  4. /*
  5.  *-- AutoRev header do NOT edit!!
  6.  *
  7.  *   Project         :   check volumes validation
  8.  *   File            :   VaLiD.e
  9.  *   Copyright       :   © 1996 by Piotr Gapiïski
  10.  *   Author          :   Piotr Gapiïski
  11.  *   Creation Date   :   06.08.96
  12.  *   Current version :   1.4
  13.  *   Translator      :   AmigaE v3.2e
  14.  *
  15.  *   REVISION HISTORY
  16.  *
  17.  *   Date      Version  Comment
  18.  *   --------  -------  ---------------------------------------------------
  19.  *   12.02.96  1.0      dziaîa :)
  20.  *   16.02.96  1.1      drobne optymalizacje
  21.  *   05.05.96  1.2      zlokalizowane komunikaty :)
  22.  *   30.07.96  1.3      poprawiony bîâd przy AttemptLockDosList() pod OSv37
  23.  *   06.08.96  1.4      Aminet release
  24.  *
  25.  *-- REV_END --*
  26.  */
  27.  
  28. MODULE 'dos/dos','dos/dosextens','tools/exceptions'
  29. MODULE 'locale','libraries/locale','*locale_valid'
  30.  
  31. #define PROGRAMVERSION 'VaLiD v1.4 (06.08.96) (c)Piotr Gapiïski'
  32. ENUM ARG_LANGUAGE,ARG_QUIET,NUMARGS
  33.  
  34. PROC main() HANDLE
  35.   DEF rdargs=0,args[NUMARGS]:LIST,quiet=0,
  36.       language=0,languageLocale=0,
  37.       name=NIL:PTR TO CHAR,volumeName=NIL,
  38.       dlock=0,dlist=NIL:PTR TO doslist,l,info:infodata,done,
  39.       caVALID=NIL:PTR TO catalog_VALID
  40.  
  41.   -> najpierw odczytaj parametry przekazywane z programem
  42.   rdargs:=ReadArgs('LANGUAGE/K,QUIET/S',args:=[0,0,0],NIL)
  43.  
  44.   -> zainicjuj wbudowane w program komunikaty
  45.   NEW caVALID.create()
  46.   localebase:=OpenLibrary('locale.library',0)
  47.   IF localebase
  48.     -> jeûeli zdefiniowano w jakim jëzyku bëdâ komuniaty...
  49.     languageLocale:=OpenLocale(language:=args[ARG_LANGUAGE])
  50.     -> to zainicjuj odpowiedni plik z tîumaczeniami (a gdy nie da sië go
  51.     -> zainicjowaê to uûywaj wbudowanych komunikatów
  52.     caVALID.open(languageLocale,IF languageLocale THEN language ELSE NIL)
  53.   ENDIF
  54.   quiet:=IF args[ARG_QUIET] THEN TRUE ELSE FALSE
  55.  
  56.   -> pobierz listë wolumenów z systemu (w systemie v37 jest bîâd powodujâcy
  57.   -> zwracanie przez AttemptLockDosList() wartoôci 1 zamiast NIL w przypadku
  58.   -> niepowodzenia
  59.   dlist:=(dlock:=AttemptLockDosList(LDF_VOLUMES OR LDF_READ))
  60.   IF ((dlock=NIL)
  61.      OR (dlock=1)) THEN Raise(caVALID.getstr(MSG_ERROR_VOLUMES))
  62.   IF quiet=FALSE THEN WriteF('\s\n\n',PROGRAMVERSION)
  63.  
  64.   -> pobieraj z listy kolejny wolumen
  65.   WHILE (dlist:=NextDosEntry(dlist,LDF_VOLUMES))
  66.     -> upewnij sië ûe jest to wolumen...
  67.     IF dlist.type=DLT_VOLUME
  68.       -> pobierz peînâ nazwë wolumenu (wymagana jest konwersja z BSTR na APTR)
  69.       name:=BADDR(dlist.name)  -> dlist.name: BPRT TO BSTR :)
  70.       volumeName:=StrCopy(String(2+name[]++),name)
  71.       StrAdd(volumeName,':')
  72.       -> sprawdú czy jest on osiâgalny w systemie...
  73.       IF (l:=Lock(volumeName,ACCESS_READ))<>NIL
  74.         IF quiet=FALSE THEN WriteF('\l\s[20] ',volumeName)
  75.         -> pobierz informacje o wolumenie...
  76.         Info(l,info)
  77.         -> walidacja w toku?
  78.         IF info.diskstate=ID_VALIDATING
  79.           IF quiet=FALSE THEN WriteF(caVALID.getstr(MSG_VOLUME_VALIDATING),volumeName)
  80.           -> czekaj az system (disk.validator?) zakonczy naprawianie noônika
  81.           REPEAT
  82.             Info(l,info)
  83.             done:=IF info.diskstate=ID_VALIDATING THEN FALSE ELSE TRUE
  84.           UNTIL done
  85.         ENDIF
  86.         IF quiet=FALSE THEN WriteF(caVALID.getstr(MSG_VOLUME_VALIDATED))
  87.         UnLock(l)
  88.       ELSE
  89.         -> komunikat gdy wolumen nie jest osiâgalny...
  90.         WriteF(caVALID.getstr(MSG_ERROR_ACCESS),volumeName)
  91.       ENDIF
  92.     ENDIF
  93.   ENDWHILE
  94. EXCEPT DO
  95.   -> zwolnij listë wolumenów...
  96.   IF dlock<>NIL THEN UnLockDosList(LDF_VOLUMES OR LDF_READ)
  97.   IF rdargs<>NIL THEN FreeArgs(rdargs)
  98.   IF exception THEN WriteF(exception)
  99.   END caVALID
  100.   IF localebase
  101.     IF language THEN CloseLocale(languageLocale)
  102.     CloseLibrary(localebase)
  103.   ENDIF
  104. ENDPROC
  105.  
  106. CHAR '$VER: ',PROGRAMVERSION,0
  107.